package gm.data;

import java.util.LinkedList;
import java.util.Objects;

/**
 * Fonal alaposztálya.
 *
 * @author imruf84
 */
public class Wool extends LinkedList<Stitch> {

    /**
     * Fonal színe.
     */
    private HoleColor color = null;

    /**
     * Konstruktor.
     *
     * @param color szín
     */
    public Wool(HoleColor color) {
        this.color = color;
    }

    /**
     * Szín lekérdezése.
     *
     * @return szín
     */
    public HoleColor getColor() {
        return this.color;
    }

    /**
     * Fonal színének a megadása.
     *
     * @param c szín
     */
    public void setColor(HoleColor c) {
        this.color = c;
    }

    @Override
    public boolean equals(Object w) {

        if (!(w instanceof Wool)) {
            return false;
        }

        return (((Wool) w).getColor().getSymbol() == this.getColor().getSymbol());
    }

    /**
     * Fonal átalakítása úttá.
     *
     * @return elmozdulások töbje
     */
    public HolePath toHolePath() {
        HolePath result = new HolePath(this.getColor());

        this.stream().map((st) -> {
            result.add(new HolePathElement(st.getFrom()));
            return st;
        }).forEach((st) -> {
            result.add(new HolePathElement(st.getTo()));
        });

        return result;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 67 * hash + Objects.hashCode(this.color);
        return hash;
    }

}
